using System;
using System.Collections.Generic;
using ns26;
using ns27;

namespace Triton.Game.Mapping
{
	[Attribute38("NetherspiteBeamSpell")]
	public class NetherspiteBeamSpell : Spell
	{
		public int m_fullPathPolys => method_2<int>("m_fullPathPolys");

		public int m_blockedPathPolys => method_2<int>("m_blockedPathPolys");

		public bool m_targetMinionToRight => method_2<bool>("m_targetMinionToRight");

		public List<Vector3> m_sourceCardOffsets => method_3<Class270<Vector3>>("m_sourceCardOffsets")?.method_25();

		public List<Vector3> m_destCardOffsets => method_3<Class270<Vector3>>("m_destCardOffsets")?.method_25();

		public List<Vector3> m_fullPathPoints => method_3<Class270<Vector3>>("m_fullPathPoints")?.method_25();

		public bool m_visualizeControlPoints => method_2<bool>("m_visualizeControlPoints");

		public string m_beamFadeInMaterialVar => method_4("m_beamFadeInMaterialVar");

		public int m_beamFadeInPropertyID => method_2<int>("m_beamFadeInPropertyID");

		public float m_beamFadeInTime => method_2<float>("m_beamFadeInTime");

		public Spell m_beamSourceSpell => method_3<Spell>("m_beamSourceSpell");

		public Spell m_beamTargetMinionSpell => method_3<Spell>("m_beamTargetMinionSpell");

		public Spell m_beamTargetHeroSpell => method_3<Spell>("m_beamTargetHeroSpell");

		public bool m_usingFullPath => method_2<bool>("m_usingFullPath");

		public Actor m_targetActor => method_3<Actor>("m_targetActor");

		public Spell m_beamTargetSpellInstance => method_3<Spell>("m_beamTargetSpellInstance");

		public Spell m_beamSourceSpellInstance => method_3<Spell>("m_beamSourceSpellInstance");

		public UberCurve m_uberCurve => method_3<UberCurve>("m_uberCurve");

		public Material m_beamMaterial => method_3<Material>("m_beamMaterial");

		public List<GameObject> m_visualizers => method_3<Class271<GameObject>>("m_visualizers")?.method_25();

		public NetherspiteBeamSpell(IntPtr address, string className)
			: base(address, className)
		{
		}

		public NetherspiteBeamSpell(IntPtr address)
			: this(address, "NetherspiteBeamSpell")
		{
		}

		public new void Awake()
		{
			method_8("Awake");
		}

		public new void OnBirth(SpellStateType prevStateType)
		{
			method_8("OnBirth", prevStateType);
		}

		public new void OnDeath(SpellStateType prevStateType)
		{
			method_8("OnDeath", prevStateType);
		}

		public void UpdateBeamFade(float fadeValue)
		{
			method_8("UpdateBeamFade", fadeValue);
		}

		public void UpdateBlockedPathControlPoints(Actor minionToRight)
		{
			method_8("UpdateBlockedPathControlPoints", minionToRight);
		}

		public void UpdateFullPathControlPoints()
		{
			method_8("UpdateFullPathControlPoints");
		}

		public Actor GetTargetMinion()
		{
			return method_14<Actor>("GetTargetMinion", Array.Empty<object>());
		}

		public void VisualizeControlPoints()
		{
			method_8("VisualizeControlPoints");
		}

		public void OnSpellStateFinished(Spell spell, SpellStateType prevStateType, object userData)
		{
			method_8("OnSpellStateFinished", spell, prevStateType, userData);
		}
	}
}
